home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
FishMarket 1.0
/
FishMarket v1.0.iso
/
fishies
/
126-150
/
disk_126
/
iconify
/
iconify.doc
< prev
next >
Wrap
Text File
|
1992-05-06
|
4KB
|
105 lines
iconify() Amiga Programmer's Manual iconify()
NAME
iconify -- Create an icon on the screen that can be dragged
around.
SYNOPSIS
#include "iconify.h"
int success;
success =
iconify (LeftEdge, TopEdge, Width, Height, Screen, ptr, Type);
UWORD *LeftEdge, *TopEdge;
UWORD Width, Height;
struct Screen *Screen;
APTR ptr;
int Type;
DESCRIPTION
Iconify() is a subroutine that creates an icon on the Amiga screen
that can be subsequently dragged around, and double-clicked on.
Iconify() creates an icon at screen location (*LeftEdge, *TopEdge)
and of size (Width, Height), in pixels. The icon is created on
the screen specified. If Screen is NULL, the icon will be created
on the WorkBench screen.
The Type variable tells iconify() how to make the icon. Based on
the value contained in Type, ptr may be interpreted in one of three
different ways:
ICON_IMAGE:
ptr points to an initialized structure of type Image
(intuition.h). The image contained in the structure will
be used as the icon image.
ICON_BORDER:
ptr points to an initialized structure of type Border
(intuition.h). The drawing instructions contained in the
border structure will be used to render the icon.
ICON_FUNCTION:
[This is by far the most interesting one.] ptr points to
a function that will be called by iconify() N times a
second (where N is a compile-time constant). The format
of the call is:
(* ((void (*)()) ptr)) (win, val);
struct Window *win;
WORD val;
When the icon is first created, your function will be
called with val equal to one (non-zero). This should be
used as a flag to your function to call any initialization
code it may need (such as caching the icon size, setting
draw modes, etc.). On every subsequent call, val will be
equal to zero.
win points to the window which is your icon (the icon is in
fact a window-sized drag gadget). This may be used for
rendering purposes (animated icons, for example).
After the icon is created, iconify() will wait until the icon has
been double-clicked on. If the icon is of type ICON_FUNCTION,
iconify() will also call the supplied function N times a second
while waiting for the double-click.
When the icon is double-clicked, iconify() will update the values
pointed to by LeftEdge and TopEdge. This is so that, in subsequent
invocations of iconify(), the icon will be where the user last left
it. Thus, it is the responsibility of the calling program to
maintain these values.
After updating these values, iconify() will remove the icon from
the screen, and return to the caller with a non-zero value. If any
of iconify()'s internal operations fail, a zero value will be
returned. It is strongly suggested that this be checked for by
the calling program.
VIEW TO OUTSIDE PROGRAMS
Icons created with iconify() will look like small windows (this is
largely due to the fact that they are small windows). Outside
programs may wish to differentiate between 'real' windows, and
objects created with iconify().
To this end, iconify() writes the 32-bit constant 0x49434f4e
(which just happens to be the word 'ICON' in ASCII) into the
window's UserData field. Outside programs that are manipulating
windows can check for this so they can avoid touching icons (or so
that they can specifically find icons if they want).
AUTHOR
Leo L. Schwab
61 Martens Blvd.
San Rafael, CA 94901-5028
{ihnp4!ptsfa,hplabs}!{well!unicom}!ewhac
SEE ALSO
Amiga Rom Kernel Manual
Intuition: The Amiga User Interface
BUGS
There are NO bugs in MY code. However, there may be any number
of undesireable features (but I doubt it).